# 1.对以下数据进行多变量线性回归处理（每小题10分）
import tensorflow as tf
import numpy as np

# (1)数据处理
# ①读取data-01-test-score.csv数据
data = np.loadtxt('data-01-test-score.csv', delimiter=',')
# ②将最后一列作为y标签，其他数据作为x
x_data = data[:, :-1]
y_data = data[:, -1]
# ③将数据进行洗牌处理
# ④将数据按照7:3比例切分为训练集和测试集
from sklearn.model_selection import train_test_split

x_train, x_test, y_train, y_test = train_test_split(x_data, y_data, train_size=0.7)

print(np.array(x_train).shape)
print(np.array(y_train).shape)
# (2)模型操作
from keras import Sequential
from keras import layers, optimizers, losses

# ①创建模型
# ②设置网络，输入3个特征，输出一个数据值
model = Sequential(
    layers.Dense(units=1)
)
# ③使用rmsprop进行梯度下降，损失函数设置为均方误差
model.compile(optimizer=optimizers.RMSprop(), loss=losses.MSE)
# ④训练数据2000次
history = model.fit(x=x_train, y=y_train, epochs=2000)
# ⑤使用测试集数据，打印测试结果
y_predict = model.predict(x=x_test)
tf.print(y_predict)
# ⑥可视化：将测试集的真实值和预测值变化绘图进行对比
import matplotlib.pyplot as plt

# plt.plot(history.history['loss'], c='g')
plt.plot(y_test, c='r')
plt.plot(y_predict, c='g')
plt.show()

model.summary()
